﻿#include "lv_test.h"
#include "lv_main_page.h"
static void event_handler(lv_event_t* e);
static void testbtn_event_handler(lv_event_t* e);
lv_obj_t* test_main_btn;
lv_obj_t* test_panle;
/*
* 这里是测试函数，用于测试一些功能，比如按钮的创建、文本框的创建、文本框的输入、按钮的点击等等。
* 这里的测试函数没有实际的作用，只是为了测试一些功能。
* 实际的功能实现都在event_handler函数中。
* 1. 创建一个按钮，并设置其位置、大小、标志位和状态，使得按钮只能被按下和弹起。
* 2. 创建一个文本框，并设置其位置、大小、对齐方式、最大长度、接受字符、初始状态、文本内容、文本框点击事件、文本输入完成事件。
*/
void LV_testfc(void) {

//测试代码放在此处

}

lv_obj_t* labelX;
static void event_handler(lv_event_t* e) {
    lv_obj_t* obj = lv_event_get_target(e);
    lv_event_code_t code = lv_event_get_code(e);
    if (code == LV_EVENT_CLICKED) {
        lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICKABLE);//禁止再次点击
        lv_obj_add_state(obj, LV_STATE_PRESSED);//保持按钮为按下状态
        lv_obj_clear_state(obj, LV_STATE_DEFAULT);//清除默认状态
        printf("Button pressed\n");

        test_panle = lv_obj_create(main_page);
        lv_obj_set_size(test_panle, 300, 300);
        lv_obj_set_pos(test_panle, 0, 0);
        lv_obj_t* testbtn = lv_btn_create(test_panle);
        lv_obj_set_size(testbtn, 100, 50);
        lv_obj_set_pos(testbtn, 0, 0);
        lv_obj_add_event_cb(testbtn, testbtn_event_handler, LV_EVENT_CLICKED, test_panle);
        //创建一个文本标签，靠右对齐，内容为hello，背景颜色为蓝色
        labelX = lv_label_create(test_panle);
        lv_label_set_text(labelX, "hello");
        lv_obj_set_style_bg_color(labelX, lv_color_hex(0x0000ff), LV_STATE_DEFAULT | LV_PART_MAIN);
        lv_obj_set_align(labelX, LV_ALIGN_RIGHT_MID);


    }
    else if (LV_EVENT_RELEASED == code) {
        //按钮被弹起
        printf("Button released\n");
    }
}

static void testbtn_event_handler(lv_event_t* e) {
    lv_obj_t* obj = lv_event_get_target(e);
    lv_obj_t* test_panle = (lv_obj_t*)lv_event_get_user_data(e);
    lv_obj_del(test_panle);//删除测试面板

    lv_obj_add_flag(test_main_btn, LV_OBJ_FLAG_CLICKABLE);//允许再次点击
    lv_obj_clear_state(test_main_btn, LV_STATE_PRESSED);//清除按下状态，弹起按钮
    lv_obj_add_state(test_main_btn, LV_STATE_DEFAULT);//设置按钮为默认状态
}

